package com.kaikeba.estack.dao;

import java.io.Serializable;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;

public interface BaseDao<T> {


    /**
     * 插入对象
     *
     * @param sql
     * @param params
     */
    void insert(String sql, Map<String, Object> params);


    /**
     * 更新对象
     *
     * @param sql
     * @param params
     * @return
     */
    boolean update(String sql, Map<String, Object> params);

    /**
     * 删除对象
     *
     * @param id
     * @return
     */
    boolean delete(Serializable id);

    /**
     * 删除对象
     *
     * @param sql
     * @param params
     * @return
     */
    boolean delete(String sql, Map<String, Object> params);

    /**
     * 查询所有对象
     *
     * @return
     */
    List<T> listAll();


    /**
     * 查询
     *
     * @param sql
     * @param params
     * @return
     */
    List<T> list(String sql, Map<String, Object> params);

    /**
     * 查询
     *
     * @param sql
     * @param params
     * @return
     */
    T find(String sql, Map<String, Object> params);

    /**
     * 查询总数
     *
     * @return
     */
    long count();

    /**
     * 查询总数
     *
     * @return
     */
    long count(String sql, Map<String, Object> params);


    /**
     * 获取当前操作的主表名
     *
     * @return
     */
    String getTableName();
}
